package com.zby.common.minio;

import io.minio.MinioClient;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author wuyanzhu
 */
@Configuration
@EnableConfigurationProperties(MinioPojo.class)
public class MinioConfiguration{

    private final  MinioPojo minioPojo;
    public MinioConfiguration(MinioPojo minioPojo) {
        this.minioPojo = minioPojo;
    }

    /**
     * 创建并配置Minio客户端实例
     *
     * 本方法通过MinioClient构建器创建客户端实例，使用配置类(minioPojo)中存储的：
     * - 服务端点(endpoint)
     * - 访问凭证(accessKey/secretKey)
     *
     * 注意：该方法创建的客户端未配置HTTPS证书校验策略，需确保minioPojo中的配置信息完整有效
     *
     * @return MinioClient 配置完成的Minio客户端实例，可用于后续对象存储操作
     */
    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                // 从配置对象获取服务地址（格式示例：http://hostname:9000）
                .endpoint(minioPojo.getEndpoint())
                // 设置访问凭证（AK/SK需具有对应存储桶的操作权限）
                .credentials(minioPojo.getAccessKey(), minioPojo.getSecretKey())
                .build();
    }


}
